Приложение 1. Язык выражений системы компоновки данных
Язык выражений системы компоновки данных предназначен для записи выражений, используемых в различных частях системы, например, в настройках компоновки данных, для описания выражений пользовательских полей.
Литералы
В выражении могут присутствовать литералы. Возможны литералы следующих типов:
● Строка,
● Число,
● Дата,
● Булево.
Строка
Строковый литерал записывается в символах «"».
Копировать в буфер обмена"Строковый литерал"
При необходимости использования внутри строкового литерала символа «"» следует использовать два таких символа.
Копировать в буфер обмена"Литерал ""в кавычках"""
Число
Число записывается без пробелов, в десятичном формате. Дробная часть отделяется при помощи символа «.».
Копировать в буфер обмена10.5 200
Дата
Литерал типа Дата записывается при помощи ключевого литерала ДАТАВРЕМЯ (DATETIME). После данного ключевого слова в скобках, через запятую, перечисляются год, месяц, день, часы, минуты, секунды. Указание времени необязательно.
Копировать в буфер обменаДАТАВРЕМЯ(1975, 1, 06) - Шестое января 1975 года ДАТАВРЕМЯ(2006, 12, 2, 23, 56, 57) - Второе декабря 2006 года, 23 часа 56 минут 57 секунд
Булево
Булевы значения могут быть записаны при помощи литералов Истина (True), Ложь (False).
Значение
Для указания литералов других типов (системных перечислений, предопределенных данных) используется ключевое слово ЗНАЧЕНИЕ, после которого в скобках идет указание имени литерала.
Копировать в буфер обменаЗНАЧЕНИЕ(ВидСчета.Активный)
Поля
В выражениях могут использоваться поля наборов данных. Поле идентифицируется путем к данным. Части пути к данным отделяются друг от друга символом «.». Имя поля не является чувствительным к регистру.
Копировать в буфер обменаНоменклатура.Артикул Продажи.СуммаОборот
Параметры
Выражения могут использовать параметры. Для использования в выражении параметра достаточно написать его имя, которому будет предшествовать символ &.
Копировать в буфер обмена&Контрагент &ДатаНачала
1.1. Операции над числами
Унарный –
Данная операция предназначена для изменения знака числа на обратный.
Копировать в буфер обмена-Продажи.Количество
Унарный +
Данная операция не выполняет над числом никаких действий.
Копировать в буфер обмена+Продажи.Количество
Бинарный –
Данная операция предназначена для вычисления разности двух чисел.
Копировать в буфер обменаОстаткиИОбороты.НачальныйОстаток - ОстаткиИОбороты.КонечныйОстаток ОстаткиИОбороты.НачальныйОстаток - 100 400 - 357
Бинарный +
Данная операция предназначена для вычисления суммы двух чисел.
Копировать в буфер обменаОстаткиИОбороты.НачальныйОстаток + ОстаткиИОбороты.Оборот ОстаткиИОбороты.НачальныйОстаток + 100 400 + 357
Произведение
Данная операция предназначена для вычисления произведения двух чисел.
Копировать в буфер обменаНоменклатура.Цена * 1.2 2 * 3.14
Деление
Данная операция предназначена для получения результата деления одного операнда на другой.
Копировать в буфер обменаНоменклатура.Цена / 1.2 2 / 3.14
Остаток от деления
Данная операция предназначена для получения остатка от деления одного операнда на другой.
Копировать в буфер обменаНоменклатура.Цена % 1.2 2 % 3.14
1.2. Операции над строками
Конкатенация (Бинарный +)
Данная операция предназначена для конкатенации двух строк. Использование строк неограниченной длины не поддерживается. Строка длиной более 1024 символов считается строкой неограниченной длины.
Копировать в буфер обменаНоменклатура.Артикул + ": "+ Номенклатура.Наименование
ПОДОБНО (LIKE)
Данная операция проверяет соответствие строки переданному шаблону.
Значением оператора ПОДОБНО является Истина, если значение выражения удовлетворяет шаблону, и Ложь в противном случае.
Следующие символы в строке шаблона имеют смысл, отличный от просто очередного символа строки:
● % – процент: последовательность, содержащая ноль и более произвольных символов;
● _ – подчеркивание: один произвольный символ;
● […] – один или несколько символов в квадратных скобках: один символ, любой из перечисленных внутри квадратных скобок. В перечислении могут встречаться диапазоны, например a–z, означающие произвольный символ, входящий в диапазон, включая концы диапазона;
● [^…] – в квадратных скобках значок отрицания, за которым следует один или несколько символов: любой символ, кроме тех, которые перечислены следом за значком отрицания.
Любой другой символ означает сам себя и не несет никакой дополнительной нагрузки. Если в качестве самого себя необходимо записать один из перечисленных символов, то ему должен предшествовать спецсимвол, указанный после ключевого слова СПЕЦСИМВОЛ (ESCAPE).
Например, приведенный ниже шаблон означает подстроку, состоящую из последовательности символов: буквы А; буквы Б; буквы В; одной цифры; одной из букв а, б, в или г; символа подчеркивания; буквы а; буквы б; буквы в. Причем эта последовательность может располагаться начиная с произвольной позиции в строке.
Копировать в буфер обмена"%АБВ[0-9][абвг]\_абв%" СПЕЦСИМВОЛ "\"
1.3. Операции сравнения
РАВНО
Данная операция предназначена для сравнения двух операндов на равенство.
Копировать в буфер обменаПродажи.Контрагент = Продажи.НоменклатураОсновнойПоставщик
НЕ РАВНО
Данная операция предназначена для сравнения двух операндов на неравенство.
Копировать в буфер обменаПродажи.Контрагент <> Продажи.НоменклатураОсновнойПоставщик
МЕНЬШЕ
Данная операция предназначена для проверки того, что первый операнд меньше второго.
Копировать в буфер обменаПродажиТекущие.Сумма < ПродажиПрошлые.Сумма
БОЛЬШЕ
Данная операция предназначена для проверки того, что первый операнд больше второго.
Копировать в буфер обменаПродажиТекущие.Сумма > ПродажиПрошлые.Сумма
МЕНЬШЕ ИЛИ РАВНО
Данная операция предназначена для проверки того, что первый операнд меньше либо равен второму.
Копировать в буфер обменаПродажиТекущие.Сумма <= ПродажиПрошлые.Сумма
БОЛЬШЕ ИЛИ РАВНО
Данная операция предназначена для проверки того, что первый операнд больше либо равен второму.
Копировать в буфер обменаПродажиТекущие.Сумма >= ПродажиПрошлые.Сумма
Операция «В» (IN)
Данная операция осуществляет проверку наличия значения в переданном списке значений. Результатом операции будет Истина, если значение найдено, или Ложь – в противном случае.
Копировать в буфер обменаНоменклатура В (&Товар1, &Товар2)
Операция проверки наличия значения в наборе данных
Операция осуществляет проверку наличия значения в указанном наборе данных. Набор данных для проверки должен содержать одно поле.
Копировать в буфер обменаПродажи.Контрагент В Контрагенты
Операция проверки значения на NULL ЕСТЬ NULL (IS NULL)
Данная операция возвращает значение Истина, если оно является значением NULL.
Копировать в буфер обменаПродажи.Контрагент ЕСТЬ NULL
Операция проверки значения на неравенство NULL ЕСТЬ НЕ NULL (IS NOT NULL)
Данная операция возвращает значение Истина, если оно не является значением NULL.
Копировать в буфер обменаПродажи.Контрагент ЕСТЬ НЕ NULL
1.4. Логические операции
Логические операции принимают в качестве операндов выражения, имеющие тип Булево.
Операция «НЕ» (NOT)
Операция НЕ возвращает значение Истина, если ее операнд имеет значение Ложь, и Ложь, если ее операнд имеет значение Истина.
Копировать в буфер обменаНЕ Документ.Грузополучатель = Документ.Грузоотправитель
Операция «И» (AND)
Операция И возвращает значение Истина, если оба операнда имеют значение Истина, и Ложь, если один из операндов имеет значение Ложь.
Копировать в буфер обменаДокумент.Грузополучатель = Документ.Грузоотправитель И Документ.Грузополучатель = &Контрагент
Операция «ИЛИ» (OR)
Операция ИЛИ возвращает значение Истина, если один из операндов имеет значение Истина, и Ложь, если оба операнда имеют значение Ложь.
Копировать в буфер обменаДокумент.Грузополучатель = Документ.Грузоотправитель ИЛИ Документ.Грузополучатель = &Контрагент
1.5. Агрегатные функции
Агрегатные функции осуществляют некоторое действие над набором данных.
СУММА (SUM)
Агрегатная функция СУММА рассчитывает сумму значений выражений, переданных ей в качестве аргумента для всех детальных записей. В качестве параметра может быть использован результат функции Массив.
Копировать в буфер обменаСУММА(Продажи.СуммаОборот)
КОЛИЧЕСТВО (COUNT)
Функция КОЛИЧЕСТВО рассчитывает количество значений, отличных от значения NULL. В качестве параметра может быть использован результат функции Массив. Например:
Копировать в буфер обменаКОЛИЧЕСТВО(Продажи.Контрагент)
КОЛИЧЕСТВО (РАЗЛИЧНЫЕ) (COUNT (DISTINCT))
Эта функция рассчитывает количество различных значений. В качестве параметра может быть использован результат функции Массив.
Копировать в буфер обменаКОЛИЧЕСТВО(РАЗЛИЧНЫЕ Продажи.Контрагент)
МАКСИМУМ (MAX)
Функция получает максимальное значение. В качестве параметра может быть использован результат функции Массив.
Копировать в буфер обменаМАКСИМУМ(Остатки.Количество)
МИНИМУМ (MIN)
Функция получает минимальное значение. В качестве параметра может быть использован результат функции Массив.
Копировать в буфер обменаМИНИМУМ(Остатки.Количество)
СРЕДНЕЕ (AVG)
Функция получает среднее значение для значений, отличных от NULL. В качестве параметра может быть использован результат функции Массив.
Копировать в буфер обменаСРЕДНЕЕ(Остатки.Количество)
МАССИВ (ARRAY)
Функция возвращает массив, содержащий для каждой детальной записи значение параметра. Если выражение, указанное в параметре, содержит функцию Массив, то считается, что данное выражение является агрегатным. В качестве параметра для функции указывается выражение произвольного типа.
В качестве параметра может быть указано выражение, возвращающее таблицу значений. При этом результатом работы функции Массив будет массив, содержащий значения первой колонки таблицы значений, переданной в качестве параметра.
Копировать в буфер обменаМАССИВ(КоличествоПредложений)
ТАБЛИЦАЗНАЧЕНИЙ (VALUETABLE)
Функция возвращает таблицу значений, содержащую столько колонок, сколько параметров у функции. Детальные записи получаются из наборов данных, которые нужны для получения всех полей, участвующих в выражениях параметров функции. Если выражение содержит функцию ТаблицаЗначений, то считается, что данное выражение является агрегатным.
У функции может быть один или несколько параметров произвольного типа. После каждого параметра может располагаться необязательное ключевое слово КАК и имя, которое будет назначено колонке таблицы значений.
Копировать в буфер обменаТаблицаЗначений(Различные Номенклатура, ХарактеристикаНоменклатуры КАК Характеристика)
ГРУППОВАЯОБРАБОТКА (GROUPPROCESSING)
Функция возвращает объект ДанныеГрупповойОбработкиКомпоновкиДанных (DataCompositionGroupProcessingData), который имеет следующие свойства:
● Данные (Data). Тип – таблица значений. В это свойство функция помещает таблицу значений, содержащую результаты вычисления выражения, указанного в первом параметре функции для каждой групповой записи группировки. Если группировка иерархическая, то каждый уровень иерархии обрабатывается функцией отдельно, при этом значения для иерархических записей также помещаются в данные.
● ТекущийЭлемент (CurrentItem) – строка таблицы значений, являющихся текущими. При вызове для общего итога ТекущийЭлемент содержит значение Неопределено. В данное свойство функция помещает строку таблицы значений, для которой в настоящий момент вычисляется функция.
● ВременныеДанныеОбработки (ProcessingTempData) – структура, в которую могут быть помещены данные промежуточных результатов. Рекомендуется в различных функциях давать свойствам уникальные имена, т. к. возможна ситуация, когда один и тот же объект ДанныеГрупповойОбоработкиКомпоновкиДанных будет передан в несколько различных функций.
Функция имеет следующие параметры:
● Выражения – строка, в которой через запятую перечислены выражения, которые нужно вычислить. После каждого выражения возможно наличие необязательного ключевого слова КАК и имени колонки результирующей таблицы значений.
● ВыраженияИерархии – выражения, которые нужно вычислить для иерархических записей. Аналогично параметру Выражения с тем отличием, что параметр Выражения используется для неиерархических записей, а параметр ВыраженияИерархии используется для иерархических записей. Если параметр не указан, то для вычисления значений для иерархических записей используются выражения, указанные в параметре Выражение.
● ИмяГруппировки – имя группировки, в которой нужно вычислять группировку обработки. Тип Строка. Если не указано, то вычисление происходит в текущей группировке. Если вычисление идет в таблице и параметр содержит пустую строку или не указан, то значение вычисляется для группировки-строки. Компоновщик макета при генерации макета компоновки данных заменяет данное имя именем группировки в результирующем макете. Если группировка недоступна, то функция будет заменена на значение NULL.
Копировать в буфер обменаГрупповаяОбработка("Сумма(СуммаОборот)")
СВЕРНУТЬ (GROUPBY)
Функция предназначена для удаления дубликатов из массива. Возвращает массив или таблицу значений, в которой отсутствуют дублирующиеся элементы.
Параметры:
● Массив или таблица значений;
● номера или имена колонок таблицы значений, среди которых нужно искать дубликаты. По умолчанию все колонки (через запятую).
ПОЛУЧИТЬЧАСТЬ(GETPART)
Функция возвращает таблицу значений, содержащую определенные колонки из исходной таблицы значений.
Параметры:
● таблица значений, из которой нужно получить колонки;
● номера или имена колонок, которые нужно получить, разделенные запятой.
Возвращаемое значение: таблица значений, включающая только колонки, которые указаны в параметре Номера/имена колонок.
УПОРЯДОЧИТЬ(ORDER)
Предназначена для упорядочивания элементов массива.
Параметры:
● Массив или ТаблицаЗначений;
● номер или имя колонки таблицы значений, по которой нужно упорядочить. Для массива номер можно не указывать. Направление упорядочивания Необходимость автоупорядочивания. Убыв/Возр + Автоупорядочивание.
Возвращаемое значение: массив или таблица значений с упорядоченными элементами.
СОЕДИНИТЬСТРОКИ (JOINSTRINGS)
Агрегатная функция, позволяющая объединять строки в одну строку.
Параметры:
● Значения, которые нужно объединить в одну строку. Если является массивом, то в строку будут объединяться элементы массива. Если является таблицей значений, то в строку будут объединяться все колонки и строки таблицы.
● Разделитель элементов. Строка, содержащая текст, который нужно использовать в качестве разделителя между элементами массива и строками таблицы значений. По умолчанию символ перевода строк.
● Разделители колонок. Строка, содержащая текст, который нужно использовать в качестве разделителя между колонками таблицы значений. По умолчанию «;».
Каждый (Every)
Если хоть одна запись имеет значение Ложь, то функция возвращает Ложь. Иначе – Истина.
Синтаксис:
Каждый(Выражение)
Параметр:
Выражение – тип Булево.
Пример:
Копировать в буфер обменаКаждый()
Любой (Any)
Если хоть одна запись имеет значение Истина, то результат – Истина. Иначе – Ложь.
Синтаксис:
Любой(Выражение)
Параметр:
Выражение – тип Булево.
Пример:
Копировать в буфер обменаЛюбой()
СтандартноеОтклонениеГенеральнойСовокупности (Stddev_Pop)
Вычисляет стандартное отклонение совокупности. Используется формула: SQRT(ДисперсияГенеральнойСовокупности(X))
Синтаксис: СтандартноеОтклонениеГенеральнойСовокупности(Выражение)
Параметр:
Выражение – тип Число.
Тип возвращаемого значения – Число.
Пример:
|
X |
Y |
|
1 |
7 |
|
2 |
1 |
|
3 |
2 |
|
4 |
5 |
|
5 |
7 |
|
6 |
34 |
|
7 |
32 |
|
8 |
43 |
|
9 |
87 |
ВЫБРАТЬ ДисперсияВыборки(Y, X) ИЗ Таблица
Результат:
Копировать в буфер обмена805.694444
СтандартноеОтклонениеВыборки (Stddev_Samp)
Функция вычисляет совокупное типовое стандартное отклонение. Используется формула: SQRT(ДисперсияВыборки(X))
Синтаксис:
СтандартноеОтклонениеВыборки(Выражение)
Параметр:
Выражение – тип Число.
Тип возвращаемого значения – Число.
Пример:
|
X |
Y |
|
1 |
7 |
|
2 |
1 |
|
3 |
2 |
|
4 |
5 |
|
5 |
7 |
|
6 |
34 |
|
7 |
32 |
|
8 |
43 |
|
9 |
87 |
ВЫБРАТЬ СтандартноеОтклонениеВыборки(Y) ИЗ Таблица
Результат:
Копировать в буфер обмена28.3847573
ДисперсияВыборки (Var_Samp)
Функция вычисляет типовое различие ряда чисел без учета значений NULL в этом наборе. Используется формула: (Сумма(X^2) - Сумма(X)^2 / Количество(X)) / (Количество(X) - 1).
Если Количество(X) = 1, то возвращается значение NULL.
Синтаксис:
ДисперсияВыборки(Выражение)
Параметр:
Выражение – тип Число.
Пример:
|
X |
Y |
|
1 |
7 |
|
2 |
1 |
|
3 |
2 |
|
4 |
5 |
|
5 |
7 |
|
6 |
34 |
|
7 |
32 |
|
8 |
43 |
|
9 |
87 |
ВЫБРАТЬ ДисперсияВыборки(Y, X) ИЗ Таблица
Результат:
Копировать в буфер обмена805.694444
ДисперсияГенеральнойСовокупности (Var_Pop)
Функция вычисляет различие совокупности ряда чисел без учета значений NULL в этом наборе. Используется формула: (Сумма(X ^2) - Сумма(X)^2 / Количество(X)) / Количество(X).
Синтаксис:
ДисперсияГенеральнойСовокупности(Выражение)
Параметр:
Выражение – тип Число.
Пример:
|
X |
Y |
|
1 |
7 |
|
2 |
1 |
|
3 |
2 |
|
4 |
5 |
|
5 |
7 |
|
6 |
34 |
|
7 |
32 |
|
8 |
43 |
|
9 |
87 |
ВЫБРАТЬ ДисперсияГенеральнойСовокупности(Y, X) ИЗ Таблица
Результат:
Копировать в буфер обмена716.17284
КовариацияГенеральнойСовокупности (Covar_Pop)
Вычисляет ковариацию ряда числовых пар. Используется формула: (Сумма(Y * X) - Сумма(X) * Сумма(Y) / n) / n, где n число пар (Y, X), в которых ни Y ни X не являются NULL.
Синтаксис:
КовариацияГенеральнойСовокупности(Y, X)
Параметры:
● Y – тип Число;
● X – тип Число.
|
X |
Y |
|
1 |
7 |
|
2 |
1 |
|
3 |
2 |
|
4 |
5 |
|
5 |
7 |
|
6 |
34 |
|
7 |
32 |
|
8 |
43 |
|
9 |
87 |
ВЫБРАТЬ КовариацияГенеральнойСовокупности(Y, X) ИЗ Таблица
Результат:
Копировать в буфер обмена59.4444444
КовариацияВыборки (Covar_Samp)
Вычисляет типовое различие ряда чисел без учета значений NULL в этом наборе. Используется формула: (Сумма(Y * X) - Сумма(Y) * Сумма(X) / n) / (n-1), где n число пар (Y, X) в которых ни Y, ни X не являются NULL.
Синтаксис:
КовариацияВыборки(Y, X)
Параметры:
● Y – тип Число;
● X – тип Число.
Пример:
|
X |
Y |
|
1 |
7 |
|
2 |
1 |
|
3 |
2 |
|
4 |
5 |
|
5 |
7 |
|
6 |
34 |
|
7 |
32 |
|
8 |
43 |
|
9 |
87 |
ВЫБРАТЬ КовариацияВыборки(Y, X) ИЗ Таблица
Результат:
Копировать в буфер обмена66.875
Корреляция (Corr)
Функция вычисляет коэффициент корреляции ряда числовых пар. Используется формула: КовариацияГенеральнойСовокупности(Y, X) / (СтандартноеОтклонениеГенеральнойСовокупности(Y) * СтандартноеОтклонениеГенеральнойСовокупности(X)). Не учитываются пары, в которых Y или X – NULL.
Синтаксис:
Корреляция(Y, X)
Параметры:
● Y – тип Число;
● X – тип Число.
Пример:
|
X |
Y |
|
1 |
7 |
|
2 |
1 |
|
3 |
2 |
|
4 |
5 |
|
5 |
7 |
|
6 |
34 |
|
7 |
32 |
|
8 |
43 |
|
9 |
87 |
ВЫБРАТЬ Корреляция(X, Y) ИЗ Таблица
Результат:
Копировать в буфер обмена0.860296149
РегрессияНаклон (Regr_Slope)
Функция вычисляет наклон линии. Используется формула: КовариацияГенеральнойСовокупности(Y, X) / ДисперсияГенеральнойСовокупности(X). Вычисляется без учета пар, содержащих NULL.
Синтаксис:
РегрессияНаклон(Y, X)
Параметры:
● Y – тип Число;
● X – тип Число.
Пример:
|
X |
Y |
|
1 |
7 |
|
2 |
1 |
|
3 |
2 |
|
4 |
5 |
|
5 |
7 |
|
6 |
34 |
|
7 |
32 |
|
8 |
43 |
|
9 |
87 |
ВЫБРАТЬ РегрессияНаклон(Y, X) ИЗ Таблица
Результат:
Копировать в буфер обмена8.91666667
РегрессияОтрезок (Regr_Intercept)
Функция вычисляет Y-точку пересечения линии регресса. Используется формула: Среднее(Y) - РегрессияНаклон(Y, X) * Среднее(X). При вычислении не учитываются пары, содержащие NULL.
Синтаксис:
РегрессияОтрезок(Y, X)
Параметры:
● Y – тип Число;
● X – тип Число.
Пример:
|
X |
Y |
|
1 |
7 |
|
2 |
1 |
|
3 |
2 |
|
4 |
5 |
|
5 |
7 |
|
6 |
34 |
|
7 |
32 |
|
8 |
43 |
|
9 |
87 |
ВЫБРАТЬ РегрессияОтрезок(Y, X) ИЗ Таблица
Результат:
Копировать в буфер обмена-20.361111
РегрессияКоличество (Regr_Count)
Вычисляет количество пар, не содержащих NULL.
Синтаксис:
РегрессияКоличество(Y, X)
Параметры:
● Y – тип Число;
● X – тип Число.
Пример:
|
X |
Y |
|
1 |
7 |
|
2 |
1 |
|
3 |
2 |
|
4 |
5 |
|
5 |
7 |
|
6 |
34 |
|
7 |
32 |
|
8 |
43 |
|
9 |
87 |
ВЫБРАТЬ РегрессияКоличество(Y, X) ИЗ Таблица
Результат:
Копировать в буфер обмена9
РегрессияR2 (Regr_R2)
Вычисляет коэффициент детерминации. Вычисляется без учета пар, содержащих NULL.
Синтаксис:
РегрессияR2(Y, X)
Параметры:
● Y – тип Число;
● X – тип Число.
Возвращаемое значение:
NULL – если ДисперсияГенеральнойСовокупности(X)=0; 1 – если ДисперсияГенеральнойСовокупности(Y)=0 и ДисперсияГенеральнойСовокупности(X)<>0; POW(Корреляция(Y,X),2) – если ДисперсияГенеральнойСовокупности(Y)>0 и ДисперсияГенеральнойСовокупности(X)<>0.
Пример:
|
X |
Y |
|
1 |
7 |
|
2 |
1 |
|
3 |
2 |
|
4 |
5 |
|
5 |
7 |
|
6 |
34 |
|
7 |
32 |
|
8 |
43 |
|
9 |
87 |
ВЫБРАТЬ РегрессияR2(Y, X) ИЗ Таблица
Результат:
Копировать в буфер обмена0.740109464
РегрессияСреднееX (Regr_AvgX)
Вычисляет среднее число Y после исключения X и Y пар, где или X, или Y являются пустыми. Среднее (X) вычисляется без учета пар, содержащих NULL.
Синтаксис:
РегрессияСреднееX(Y, X)
Параметры:
● Y – тип Число;
● X – тип Число.
Пример:
|
X |
Y |
|
1 |
7 |
|
2 |
1 |
|
3 |
2 |
|
4 |
5 |
|
5 |
7 |
|
6 |
34 |
|
7 |
32 |
|
8 |
43 |
|
9 |
87 |
ВЫБРАТЬ РегрессияСреднееX(Y, X) ИЗ Таблица
Результат:
Копировать в буфер обмена5
РегрессияСреднееY (Regr_AvgY)
Функция вычисляет среднее число X после исключения X и Y пар, где или X, или Y являются пустыми. Среднее (Y) вычисляется без учета пар, содержащих NULL.
Синтаксис:
РегрессияСреднееY (Y, X)
Параметры:
● Y – тип Число;
● X – тип Число.
Пример:
|
X |
Y |
|
1 |
7 |
|
2 |
1 |
|
3 |
2 |
|
4 |
5 |
|
5 |
7 |
|
6 |
34 |
|
7 |
32 |
|
8 |
43 |
|
9 |
87 |
ВЫБРАТЬ РегрессияСреднееY(Y, X) ИЗ Таблица
Результат:
Копировать в буфер обмена24.2222222
РегрессияSXX (Regr_SXX)
Функция возвращает сумму квадратов независимых выражений, используемых в линейной модели регресса. Функция может использоваться, чтобы оценить статистическую обоснованность модели регресса.
Значение вычисляется по формуле: РегрессияКоличество(Y, X) * ДисперсияГенеральнойСовокупности(X). При этом пары, содержащие NULL, не учитываются.
Синтаксис:
РегрессияSXX (Y, X)
Параметры:
● Y – тип Число;
● X – тип Число.
Пример:
|
X |
Y |
|
1 |
7 |
|
2 |
1 |
|
3 |
2 |
|
4 |
5 |
|
5 |
7 |
|
6 |
34 |
|
7 |
32 |
|
8 |
43 |
|
9 |
87 |
ВЫБРАТЬ РегрессияSXX(Y, X) ИЗ Таблица
Результат:
Копировать в буфер обмена60
РегрессияSYY (Regr_SYY)
Функция вычисляет значение по формуле: РегрессияКоличество(Y, X) * ДисперсияГенеральнойСовокупности(Y).
Значение вычисляется без учета пар, содержащих NULL.
Синтаксис:
РегрессияSYY (Y, X)
Параметры:
● Y – тип Число;
● X – тип Число.
Пример:
|
X |
Y |
|
1 |
7 |
|
2 |
1 |
|
3 |
2 |
|
4 |
5 |
|
5 |
7 |
|
6 |
34 |
|
7 |
32 |
|
8 |
43 |
|
9 |
87 |
ВЫБРАТЬ РегрессияSYY(Y, X) ИЗ Таблица
Результат:
Копировать в буфер обмена6445.55556
РегрессияSXY (Regr_SXY)
Функция вычисляет значение по формуле: РегрессияКоличество(Y, X) * КовариацияГенеральнойСовокупности(Y, X). Вычисляется без учета пар, содержащих NULL.
Синтаксис:
РегрессияSXY (Y, X)
Параметры:
● Y – тип Число;
● X – тип Число.
Пример:
|
X |
Y |
|
1 |
7 |
|
2 |
1 |
|
3 |
2 |
|
4 |
5 |
|
5 |
7 |
|
6 |
34 |
|
7 |
32 |
|
8 |
43 |
|
9 |
87 |
ВЫБРАТЬ РегрессияSXY(Y, X) ИЗ Таблица
Результат:
Копировать в буфер обмена535
МестоВПорядке (Rank)
Синтаксис:
МестоВПорядке(Порядок, ПорядокИерархии, ИмяГруппировки)
Параметры:
● Порядок – тип Строка. Содержит выражения, в последовательности которых нужно расположить групповые записи, разделенные через запятую. Направление упорядочивания управляется при помощи слов Возр, Убыв. После поля также можно указать строку Автоупорядочивание, что обозначает, что при упорядочивании ссылок нужно использовать поля упорядочивания, определенные для объекта, на который ссылка. Если последовательность не указана, то значение рассчитывается в последовательности группировки;
● ПорядокИерархии – тип Строка. Содержит выражения упорядочивания для иерархических записей;
● ИмяГруппировки – тип Строка. Имя группировки, в которой нужно вычислить функцию.. Если не указано, то вычисление происходит в текущей группировке. Если вычисление идет в таблице и параметр содержит пустую строку или не указан, то значение вычисляется для группировки-строки. Компоновщик макета при генерации макета компоновки данных заменяет данное имя на имя группировки в результирующем макете. Если группировка не доступна, то функция будет заменена на значение NULL.
Пример:
Копировать в буфер обменаМестоВПорядке("[Количество Оборот]")
КлассификацияABC (ClassificationABC)
Функция возвращает номер класса, начиная с 1, который соответствует классу А.
Синтаксис:
КлассификацияABC(Значение, КоличествоГрупп, ПроцентыДляГрупп, ИмяГруппировки)
Параметры:
● Значение – тип Строка. Указывает выражение, для которого следует рассчитывать классификацию;
● КоличествоГрупп – тип Число. Задает количество групп, на которое нужно разбить набор значений;
● ПроцентыДляГрупп – тип Число. Объем, в %, каждой группы разбиения, кроме последней группы. Перечисляются в строке через запятую.
● ИмяГруппировки – тип Строка. Имя группировки, в которой нужно вычислять группировку обработки. Если не указано, то вычисление происходит в текущей группировке. Если вычисление выполняется в таблице и параметр содержит пустую строку или не указан, то значение вычисляется для группировки-строки. Данное имя будет заменено на имя группировки в результирующем макете. Если группировка не доступна, то функция будет заменена на значение NULL.
Пример:
Копировать в буфер обменаКлассификацияABC(СуммаОборот, 3, "15, 25")
1.6. Другие операции
Операция «ВЫБОР»
Операция ВЫБОР предназначена для осуществления выбора одного из нескольких значений при выполнении некоторых условий.
Копировать в буфер обменаВЫБОР Когда Сумма > 1000 Тогда Сумма Иначе 0 Конец
Правила сравнения двух значений
Если типы сравниваемых значений отличаются друг от друга, то отношения между значениями определяются на основании приоритета типов:
● NULL (самый низший),
● Булево,
● Число,
● Дата,
● Строка,
● ссылочные типы.
Отношения между различными ссылочными типами определяются на основе ссылочных номеров таблиц, соответствующих тому или иному типу.
Если типы данных совпадают, то производится сравнение значений по следующим правилам:
● у типа Булево значение ИСТИНА больше значения ЛОЖЬ;
● у типа Число обычные правила сравнения для чисел;
● у типа Дата более ранние даты меньше более поздних;
● у типа Строка строки сравниваются в соответствии с установленными национальными особенностями базы данных;
● ссылочные типы сравниваются на основе своих значений (номера записи и т. п.).
Работа со значением NULL
Любая операция, в которой значение одного из операндов NULL, будет давать результат NULL.
Есть исключения:
● операция И будет возвращать NULL только в случае, если ни один из операндов не имеет значения Ложь;
● операция ИЛИ будет возвращать NULL только в случае, если ни один из операндов не имеет значение Истина.
Приоритеты операций
Операции имеют следующие приоритеты (первая строка имеет низший приоритет):
● ИЛИ;
● И;
● НЕ;
● В, ЕСТЬ NULL, ЕСТЬ НЕ NULL;
● =, <>, <=, <, >=, >;
● Бинарный +, Бинарный –;
● *, /, %;
● Унарный +, Унарный –.
1.7. Функции
1.7.1. Работа с выражениями
ВЫЧИСЛИТЬ (EVAL)
Функция ВЫЧИСЛИТЬ предназначена для вычисления выражения в контексте некоторой группировки. Функция используется для совместимости с предыдущими версиями платформы. Вместо неё рекомендуется использовать функцию ВычислитьВыражение.
Функция имеет следующие параметры:
● Выражение – строка, содержащая вычисляемое выражение.
● Группировка – строка, содержащая имя группировки, в контексте которой необходимо вычислить выражение. Если в качестве имени группировки используется пустая строка, вычисление будет выполнено в контексте текущей группировки. Если в качестве имени группировки будет использована строка ОбщийИтог, вычисление будет выполнено в контексте общего итога. В остальных случаях вычисление будет выполняться в контексте родительской группировки с таким именем.
● Тип расчета – строка, содержащая тип расчета. Если данный параметр имеет значение ОбщийИтог, выражение будет вычисляться для всех записей группировки. Если значение параметра – Группировка, значения будут вычисляться для текущей групповой записи группировки.
Копировать в буфер обменаСУММА(Продажи.СуммаОборот) / ВЫЧИСЛИТЬ("Сумма(Продажи.СуммаОборот)", "ОбщийИтог")
В данном примере в результате получится отношение суммы по полю Продажи.СуммаОборот записи группировки к сумме того же поля во всей компоновке.
ВЫЧИСЛИТЬВЫРАЖЕНИЕ (EVALEXPRESSION)
Функция возвращает выражение для записи указанной группировки. Имеет следующие параметры:
● Вычисляемое выражение. Строка, содержащая выражение, которое требуется вычислить.
● Группировка. Строка, содержащая имя группировки, в которой требуется вычислить выражение. Если в качестве имени группировки используется пустая строка, то вычисление будет выполнено для текущей группировки. Если указана строка ОбщийИтог, то вычисление будет выполнено для общего итога. Если в параметре указано имя группировки-строки, то при вычислении в таблице вычисление будет выполнено для группировки, полученной на пересечении требуемой области вычисления (см. описание третьего параметра) и текущей строки группировки колонки. Если в параметре указано имя группировки-колонки, то вычисление выполняется для группировки, полученной на пересечении области вычисления группировки-колонки и текущей записи группировки-строки.
● Область вычисления. Строка, содержащая область вычисления. Если параметр не указан, вычисление будет выполнено для текущей записи группировки, указанной в первом параметре. Параметр может принимать следующие значения:
● ОбщийИтог – выражение будет вычисляться для всех записей группировки.
● Иерархия – выражение будет вычисляться для родительской иерархической записи, если таковая имеется, и для всей группировки, если родительской иерархической записи не имеется.
● Группировка ‑ выражение будет вычисляться для текущей групповой записи группировки.
● ГруппировкаНеРесурса – при вычислении функции для групповой записи по ресурсам выражение будет вычислено для первой групповой записи исходной группировки.
При вычислении функции ВычислитьВыражение со значением ГруппировкаНеРесурса для групповых записей, не являющихся группировками по ресурсам, функция вычисляется так же, как бы она вычислялась со значением параметра Группировка.
Компоновщик макета компоновки данных при генерации макета компоновки данных, при выводе в макет поля-ресурса, по которому выполняется группировка, выдает в макет выражение, вычисляемое при помощи функции ВычислитьВыражение с указанным параметром ГруппировкаНеРесурса. Для остальных ресурсов в группировке по ресурсу выдаются обычные выражения ресурсов.
Компоновщик макета при генерации выражения для поля % в группе иерархии генерирует выражение, содержащее отношение выражения ресурса к функции ВычислитьВыражение для выражения ресурса, вычисляемого для текущей группировки с типом вычисления Иерархия.
● Начало. Указывает, с какой записи нужно начинать фрагмент, в котором рассчитывать агрегатные функции выражения и из какой записи получать значения полей вне агрегатных функций. Строка, содержащая одно из значений:
● Первая (First). Необходимо получать первую запись группировки. После слова в скобках можно указывать выражение, результат которого будет использоваться как смещение от начала группировки. Получаемое значение должно быть целым числом больше нуля. Например, Первая(3) – получение третьей записи от начала группировки. Если первая запись выходит за пределы группировки, то считается, что записей нет. Например, если записей 3, а требуется получить Первая(4), то считается, что записей нет.
●
Последняя (Last). Необходимо получить
последнюю запись группировки. После слова в скобках можно указывать выражение,
результат которого будет использоваться как смещение от конца группировки.
Получаемое значение должно быть целым числом больше нуля. Например, Последняя(3) –
получение третьей записи от конца группировки.
Если последняя запись выходит за пределы группировки, то считается, что записей
нет. Например, если записей 3, а требуется получить Последняя(4), то
считается, что записей нет.
●
Предыдущая (Previous). Необходимо получить
предыдущую запись группировки. После слова в скобках можно указывать выражение,
результат которого будет использоваться как смещение назад от текущей записи
группировки. Например, Предыдущая(2) –
получение предыдущей от предыдущей записи.
Если предыдущая запись выходит за пределы группировки (например, для второй
записи группировки требуется получить Предыдущая(3)), то получается первая запись
группировки.
При получении предыдущей записи для итога по группировке получается первая
запись.
●
Следующая (Next). Необходимо получить
следующую запись группировки. После слова в скобках можно указывать выражение,
результат которого будет использоваться как смещение вперед от текущей записи
группировки. Например, Следующая(2) –
получение следующей от следующей записи.
Если следующая запись выходит за пределы группировки, то считается, что записей
нет. Например, если записей 3 и для третьей записи получают Следующая, то считается, что записей нет.
При получении следующей записи для итога по группировке считается, что записи
нет.
● Текущая (Current). Необходимо получить текущую запись.
При получении для итога по группировке получается первая запись.
● ОграничивающееЗначение (BoundaryValue). Необходимость получить запись по указанному значению. После слова ОграничивающееЗначение в скобках нужно указать выражение, со значения которого нужно начинать фрагмент, первого поля упорядочивания.
В качестве записи будет получаться первая запись, значение поля упорядочивания у которой больше или равно указанному значению. Например, если в качестве поля упорядочивания используется поле Период, оно имеет значения 01.01.2010, 01.02.2010, 01.03.2010 и требуется получить ОграничивающееЗначение(ДатаВремя(2010, 1, 15)), то будет получена запись с датой 01.02.2010.
● Конец. Указывает, до какой записи нужно продолжать фрагмент, в котором рассчитывать агрегатное выражение. Строка, содержащая одно из значений:
● Первая (First). Необходимо получать первую запись группировки. После слова в скобках можно указывать выражение, результат которого будет использоваться как смещение от начала группировки. Получаемое значение должно быть целым числом больше нуля. Например, Первая(3) – получение третьей записи от начала группировки.
Если первая запись выходит за пределы группировки, то считается, что записей нет. Например, если записей 3, а требуется получить Первая(4), то считается, что записей нет.
● Последняя (Last). Необходимо получить последнюю запись группировки. После слова в скобках можно указывать выражение, результат которого будет использоваться как смещение от конца группировки. Получаемое значение должно быть целым числом больше нуля. Например, Последняя(3) – получение третьей записи от конца группировки.
Если последняя запись выходит за пределы группировки, то считается, что записей нет. Например, если записей 3, а требуется получить Последняя(4), то считается, что записей нет.
● Предыдущая (Previous). Необходимо получить предыдущую запись группировки. После слова в скобках можно указывать выражение, результат которого будет использоваться как смещение назад от текущей записи группировки. Например, Предыдущая(2) – получение предыдущей от предыдущей записи.
Если предыдущая запись выходит за пределы группировки (например, для второй записи группировки требуется получить Предыдущая(3)), то считается, что записей нет.
При получении предыдущей записи для итога по группировке считается последняя запись.
● Следующая (Next). Необходимо получить следующую запись группировки. После слова в скобках можно указывать выражение, результат которого будет использоваться как смещение вперед от текущей записи группировки. Например, Следующая(2) – получение следующей от следующей записи.
Если следующая запись выходит за пределы группировки, получается последняя запись. Например, если записей 3 и для третьей записи получают Следующая, то получается третья запись.
При получении следующей записи для итога по группировке считается, что записи нет.
● Текущая (Current). Необходимо получить текущую запись.
При получении для итога по группировке получается первая запись.
● ОграничивающееЗначение (BoundaryValue). Необходимость получить запись по указанному значению. После слова ОграничивающееЗначение в скобках следует указать выражение, со значения которого нужно начинать фрагмент, первого поля упорядочивания.
В качестве записи будет получаться последняя запись, значение поля упорядочивания у которой меньше или равно указанному значению. Например, если в качестве поля упорядочивания используется поле Период, оно имеет значения 01.01.2010, 01.02.2010, 01.03.2010, требуется получить ОграничивающееЗначение(ДатаВремя(2010, 1, 15)), то будет получена запись с датой 01.01.2010.
● Сортировка. Строка, в которой перечисляются выражения, разделенные запятыми, в направлении которых нужно упорядочивать последовательность. Если не указана, то упорядочивание выполняется так же, как и у группировки, для которой вычисляется выражение. После каждого выражения можно указать ключевое слово Возр для упорядочивания по возрастанию, Убыв для упорядочивания по убывания, Автоупорядочивание для упорядочивания ссылочных полей по полям, по которым нужно упорядочивать объект, на который выполняется ссылка. Слово Автоупорядочивание может использоваться как со словом Возр, так и со словом Убыв.
● ИерархическаяСортировка. Строка, в которой перечисляются выражения, разделенные запятыми, в направлении которых нужно упорядочивать последовательность. Применяется для упорядочивания иерархических записей. Если не указано, то упорядочивание будет выполнено в соответствии с упорядочиванием, указанным в параметре Сортировка.
● ОбработкаОдинаковыхЗначенийПорядка. Строка, содержащая одно из значений:
● Вместе (Together) обозначает, что предыдущая и следующие записи определяются на основании значений выражений упорядочивания.
● Отдельно (Separately) обозначает, что для определения предыдущей и следующей записей используется последовательность упорядоченных записей.
Например, если полученная последовательность упорядочена по дате:
Копировать в буфер обмена1. 01 января 2001 Иванов М. 10 2. 02 января 2001 Петров С. 20 3. 02 января 2001 Сидоров Р. 30 4. 03 января 2001 Петров С. 40
При использовании в обработке одинаковых значений порядка Отдельно предыдущей к записи 3 будет запись 2, а при использовании Вместе – запись 1. А фрагментом для текущей записи к записи 2 для Отдельно будет запись 2, а для Вместе – записи 2 и 3. Таким образом, сумма по текущей записи для Отдельно составит 20, а для Вместе – 50.
При указанном Вместе в параметрах Начало и Конец нельзя указывать смещение для позиций Первая, Последняя, Предыдущая, Следующая.
По умолчанию Отдельно.
Пример использования параметров
Если требуется рассчитать сумму с накоплением, то можно использовать следующее выражение:
Копировать в буфер обменаВычислитьВыражение("Сумма(СуммаОборот)", , , "Первая", "Текущая")
Если требуется получить значение группировки в предыдущей строке, то можно использовать следующее выражение:
Копировать в буфер обменаВычислитьВыражение("Курс", , , "Предыдущая")
Функция ВычислитьВыражение учитывает отбор группировок, но не учитывает иерархические отборы.
Функция ВычислитьВыражение не может применяться к группировке в групповом отборе этой группировки. Например, в отборе группировки Номенклатура нельзя использовать выражение ВычислитьВыражение("Сумма(СуммаОборот)", , "ОбщийИтог") > 1000. Но такое выражение можно использовать в иерархическом отборе.
Если конечная запись предшествует начальной, то считается, что записи для расчета детальных данных и расчета агрегатных функций отсутствуют.
При расчете интервальных выражений для общего итога (второй параметр функции ВычислитьВыражение имеет значение "ОбщийИтог") считается, что записи для расчета детальных данных и расчета агрегатных функций отсутствуют.
ВЫЧИСЛИТЬВЫРАЖЕНИЕСГРУППИРОВКОЙМАССИВ (EvalExpressionWithGroupArray)
Функция возвращает массив, каждый элемент которого содержит результат вычисления выражения для группировки по указанному полю.
Синтаксис:
ВычислитьВыражениеСГруппировкойМассив (Выражение, ВыраженияПолейГруппировки, ОтборЗаписей, ОтборГруппировок)
Параметры:
● Выражение – тип Строка. Выражение, которое нужно вычислить. Например, Сумма(СуммаОборот);
● ВыраженияПолейГруппировки – выражения полей группировки, перечисленные через запятую. Например, "Контрагент, Партия";
● ОтборЗаписей – выражение, применяемое к детальным записям. Например, ПометкаУдаления = Ложь. Если в данном параметре используется агрегатная функция, то при выполнении компоновки данных возникнет ошибка;
● ОтборЗаписей – отбор, применяемый к групповым записям. Например: Сумма(СуммаОборот) > &Параметр1.
Пример:
Копировать в буфер обменаМаксимум(ВычислитьВыражениеСГруппировкойМассив ("Сумма(СуммаОборот)", "Контрагент"));
Компоновщик макета при генерации макета преобразовывает параметры функции в термины полей макета компоновки данных. Например, поле Контрагент будет конвертировано в НаборДанных.Контрагент.
Компоновщик макета при генерации выражений для вывода пользовательского поля, в выражении которого присутствует только функция ВычислитьМассивСГруппировкой генерирует выводимое выражение таким образом, чтобы данные выводить представления и данные были упорядочены.
Например, для пользовательского поля с выражением:
Копировать в буфер обменаВычислитьВыражениеСГруппировкойМассив("Сумма(СуммаОборот)", "Контрагент")
компоновщик макета сгенерирует для вывода следующее выражение:
Копировать в буфер обменаСоединитьСтроки(Массив(Упорядочить(ВычислитьВыражениеСГруппировкойТаблицаЗначений ("Представление(Сумма(НаборДанных.СуммаОборот)), Сумма(НаборДанных.СуммаОборот)", "НаборДанных.Контрагент"), "2")))
ВЫЧИСЛИТЬВЫРАЖЕНИЕСГРУППИРОВКОЙТАБЛИЦАЗНАЧЕНИЙ(EvalExpressionWithGroupValueTable)
Функция возвращает таблицу значений, каждый элемент которого содержит результат вычисления выражения для группировки по указанному полю.
Синтаксис:
ВычислитьВыражениеСГруппировкойТаблицаЗначений (Выражение, ВыраженияПолейГруппировки, ОтборЗаписей, ОтборГруппировок)
Параметры:
● Выражение – тип Строка; выражение, которое нужно вычислить. В строке может быть перечислено несколько выражений через запятую. После каждого выражения может быть необязательное ключевое слово КАК и имя колонки таблицы значений. Например: Контрагент, Сумма(СуммаОборот) Как ОбъемПродаж;
● ВыраженияПолейГруппировки – выражения полей группировки, перечисленные через запятую. Например, Контрагент, Партия;
● ОтборЗаписей – выражение, применяемое к детальным записям. Например, ПометкаУдаления = Ложь. Если в данном параметре используется агрегатная функция, то при выполнении компоновки данных возникнет ошибка;
● ОтборГруппировок – отбор, применяемый к групповым записям. Например: Сумма(СуммаОборот) > &Параметр1.
Пример:
Копировать в буфер обменаВычислитьВыражениеСГруппировкойТаблицаЗначений ("Контрагент КАК Контрагент, Сумма(СуммаОборот) Как ОбъемПродаж", "Контрагент")
Результатом работы данной функции будет таблица значений с колонками Контрагент и ОбъемПродаж, в которых будут находиться контрагенты с их объемами продаж.
Компоновщик макета при генерации макета преобразовывает параметры функции в термины полей макета компоновки данных. Например, поле Контрагент будет конвертировано в НаборДанных.Контрагент.
Например, для пользовательского поля с выражением:
Копировать в буфер обменаВычислитьВыражениеСГруппировкойТаблицаЗначений ("Контрагент, Сумма(СуммаОборот)", "Контрагент")
Компоновщик макета сгенерирует для вывода следующее выражение:
Копировать в буфер обменаСоединитьСтроки(ПолучитьЧасть(Упорядочить(ВычислитьВыражениеСГруппировкойТаблицаЗначений ("НаборДанных.Контрагент, НаборДанных.КонтрагентПредставление, Сумма(НаборДанных.СуммаОборот), Представление(НаборДанных.СуммаОборот), НаборДанных.ПолеУпорядочивание", "НаборДанных.Контрагент"), "5, 1, 3"), "2, 4"))
1.7.2. Работа с датами и временем
ГОД (YEAR)
Данная функция предназначена для выделения года из значения типа Дата. Единственный параметр – это выражение, имеющее тип Дата.
Копировать в буфер обменаГОД(РасхНакл.Дата)
ДЕНЬ (DAY)
Данная функция предназначена для получения дня месяца из значения типа Дата. День месяца в норме находится в диапазоне от 1 до 31. Единственный параметр функции – это выражение, имеющее тип Дата.
Копировать в буфер обменаДЕНЬ(РасхНакл.Дата)
ДЕНЬГОДА (DAYOFYEAR)
Данная функция предназначена для получения дня года из значения типа Дата. День года в норме находится в диапазоне от 1 до 365 (366). Единственный параметр функции – это выражение, имеющее тип Дата.
Копировать в буфер обменаДЕНЬГОДА(РасхНакл.Дата)
ДЕНЬНЕДЕЛИ (WEEKDAY)
Данная функция предназначена для получения дня недели из значения типа Дата. День недели в норме находится в диапазоне от 1 (понедельник) до 7 (воскресенье). Единственный параметр функции – это выражение, имеющее тип Дата.
Копировать в буфер обменаДЕНЬНЕДЕЛИ(РасхНакл.Дата)
ДОБАВИТЬКДАТЕ (DATEADD)
Функция предназначена для прибавления к дате некоторой величины. Параметры:
● Выражение типа Дата;
● Тип увеличения – строка, содержащая одно из значений:
● Секунда,
● Минута,
● Час,
● День,
● Неделя,
● Месяц,
● Квартал,
● Год,
● Декада – к исходной дате будет добавлено или вычтено количество дней, умноженное на 10,
● Полугодие.
● Величина – на сколько необходимо увеличить дату. Тип Число. Дробная часть игнорируется.
Копировать в буфер обменаДОБАВИТЬКДАТЕ(ДАТАВРЕМЯ(2009, 10, 12, 10, 15, 34), "Месяц", 1)
Результат:
Копировать в буфер обмена12.11.2009 10:15:34
КВАРТАЛ (QUARTER)
Данная функция предназначена для выделения номера квартала из значения типа Дата. Номер квартала в норме находится в диапазоне от 1 до 4. Единственный параметр функции – это выражение, имеющее тип Дата.
Копировать в буфер обменаКВАРТАЛ(РасхНакл.Дата)
КОНЕЦПЕРИОДА (ENDOFPERIOD)
Функция предназначена для выделения определенной даты из заданной даты.
Параметры:
● Выражение типа Дата;
● Тип периода – строка, содержащая одно из значений:
● Минута,
● Час,
● День,
● Неделя,
● Месяц,
● Квартал,
● Год,
● Декада,
● Полугодие.
Копировать в буфер обменаКОНЕЦПЕРИОДА(ДАТАВРЕМЯ(2009, 10, 12, 10, 15, 34), "Неделя")
Результат:
Копировать в буфер обмена13.10.2009 23:59:59.
МЕСЯЦ (MONTH)
Данная функция предназначена для выделения номера месяца из значения типа Дата. Номер месяца в норме находится в диапазоне от 1 до 12. Единственный параметр функции – это выражение, имеющее тип Дата.
Копировать в буфер обменаМЕСЯЦ(РасхНакл.Дата)
МИНУТА (MINUTE)
Данная функция предназначена для получения минуты часа из значения типа Дата. Минута часа находится в диапазоне от 0 до 59. Единственный параметр функции – это выражение, имеющее тип Дата.
Копировать в буфер обменаМИНУТА(РасхНакл.Дата)
НАЧАЛОПЕРИОДА (BEGINOFPERIOD)
Функция предназначена для выделения определенной даты из заданной даты.
Параметры:
● Выражение типа Дата;
● Тип периода – строка, содержащая одно из значений:
● Минута,
● Час,
● День,
● Неделя,
● Месяц,
● Квартал,
● Год,
● Декада,
● Полугодие.
Копировать в буфер обменаНАЧАЛОПЕРИОДА(ДАТАВРЕМЯ(2009, 10, 12, 10, 15, 34), "Месяц")
Результат:
Копировать в буфер обмена01.10.2009 0:00:00
НЕДЕЛЯ (WEEK)
Данная функция предназначена для получения номера недели года из значения типа Дата. Недели года нумеруются, начиная с 1. Единственный параметр функции – это выражение, имеющее тип Дата.
РАЗНОСТЬДАТ (DATEDIFF)
Функция предназначена для получения разницы между двумя датами. Параметры:
● Выражение типа Дата;
● Выражение типа Дата;
● Тип разности – одно из значений:
● Секунда,
● Минута,
● Час,
● День,
● Месяц,
● Квартал,
● Год.
Копировать в буфер обменаРАЗНОСТЬДАТ(ДАТАВРЕМЯ(2009, 10, 12, 10, 15, 34), ДАТАВРЕМЯ(2009, 10, 14, 9, 18, 06), "День")
Результат:
Копировать в буфер обмена2
ТЕКУЩАЯДАТА (CURRENTDATE)
Возвращает системную дату. При компоновке макета компоновки во всех выражениях, которые присутствуют в компоновке, функция ТЕКУЩАЯДАТА заменяется значением текущей даты.
Копировать в буфер обменаТЕКУЩАЯДАТА()
СЕКУНДА (SECOND)
Данная функция предназначена для получения секунды минуты из значения типа Дата. Секунда минуты находится в диапазоне от 0 до 59. Единственный параметр функции – это выражение, имеющее тип Дата.
Копировать в буфер обменаСЕКУНДА(РасхНакл.Дата)
ЧАС (HOUR)
Данная функция предназначена для получения часа суток из значения типа Дата. Час суток находится в диапазоне от 0 до 23. Единственный параметр функции – это выражение, имеющее тип Дата.
Копировать в буфер обменаЧАС(РасхНакл.Дата)
1.7.3. Положение записи
НОМЕРПОПОРЯДКУ (SERIALNUMBER)
Получить следующий порядковый номер.
Копировать в буфер обменаНОМЕРПОПОРЯДКУ()
НОМЕРПОПОРЯДКУВГРУППИРОВКЕ (GROUPSERIALNUMBER)
Возвращает следующий порядковый номер в текущей группировке.
Копировать в буфер обменаНОМЕРПОПОРЯДКУВГРУППИРОВКЕ()
УРОВЕНЬ (LEVEL)
Функция предназначена для получения текущего уровня записи.
Копировать в буфер обменаУРОВЕНЬ()
УРОВЕНЬВГРУППИРОВКЕ (LEVELINGROUP)
Функция предназначена для получения уровня записи относительно корня группировки.
Копировать в буфер обменаУРОВЕНЬВГРУППИРОВКЕ()
1.7.4. Представление значения
ЗНАЧЕНИЕЗАПОЛНЕНО (VALUEISFILLED)
Возвращает Истину, если значение отлично от значения данного типа по умолчанию, отлично от значения NULL, отлично от пустой ссылки, отлично от значения Неопределено. Для логических значений осуществляется проверка на значение NULL. Для строк осуществляется проверка на отсутствие непробельных символов.
ФОРМАТ (FORMAT)
Получить отформатированную строку переданного значения. Форматная строка задается в соответствии с форматной строкой «1С:Предприятия».
Параметры:
● Значение,
● Форматная строка.
Копировать в буфер обменаФОРМАТ(РасходныеНакладные.СуммаДок, "ЧДЦ=2")
1.7.5. Работа с числами
ACos
Вычисляет арккосинус в радианах.
Синтаксис:
ACos(Выражение)
Параметр:
Выражение – тип Число. Значение косинуса (в диапазоне -1 ... 1), по которому определяется угол.
ASin
Вычисляет арксинус в радианах.
Синтаксис:
ASin(Выражение)
Параметр:
Выражение – тип Число. Аргумент функции. Определен в диапазоне -1 ... 1.
ATan
Вычисляет арктангенс в радианах.
Синтаксис:
ATan(Выражение)
Параметр:
Выражение – тип Число. Аргумент функции.
Cos
Вычисляет косинус.
Синтаксис:
Cos(Выражение).
Параметр:
Выражение – тип Число. Задается в радианах.
Exp
Возведение числа e в степень.
Синтаксис:
Exp(Выражение)
Параметр:
Выражение – тип Число. Значение степени.
Log
Вычисляет натуральный логарифм.
Синтаксис:
Log(Выражение)
Параметр:
Выражение – тип Число. Исходное число, больше 0.
Log10
Вычисляет логарифм X по основанию 10.
Синтаксис:
Log10(Выражение)
Параметр:
Выражение – тип Число. Исходное число, больше 0.
Pow
Возведение в степень.
Синтаксис:
Pow(Основание, Показатель)
Параметры:
● Основание – тип Число. Основание операции возведения в степень.
● Показатель – тип Число. Показатель степени.
Sin
Вычисляет синус.
Синтаксис:
Sin(Выражение)
Параметр:
Выражение – тип Число. Задается в радианах.
Sqrt
Вычисляет квадратный корень.
Синтаксис:
Sqrt(Выражение)
Параметр:
Выражение – тип Число. Неотрицательное число.
Tan
Вычисляет тангенс.
Синтаксис:
Tan(Выражение)
Параметр:
Выражение – тип Число. Аргумент функции.
Окр (Round)
Округляет исходное число до требуемой разрядности. Режим округления стандартный (1,5 как 2).
Синтаксис:
Окр(Выражение, Разрядность)
Параметры:
Выражение – тип Число. Исходное число. Разрядность – тип Число. Число знаков дробной части, до которых производится округление.
Цел (Int)
Отсекает дробную часть числа.
Синтаксис:
Цел(Выражение)
Параметр:
Выражение – тип Число. Дробное число.
1.7.6. Работа со строками
Врег(Upper)
Данная функция преобразует все символы строки в верхний регистр.
Синтаксис:
ВРег(<Строка>)
Параметр:
Строка – тип Строка. Исходная строка.
ДЛИНАСТРОКИ (STRINGLENGTH)
Функция предназначена для определения длины строки. Параметр – выражение строкового типа.
Копировать в буфер обменаДЛИНАСТРОКИ(Контрагенты.Адрес)
Лев (Left)
Данная функция выбирает первые слева символы строки.
Синтаксис:
Лев(<Строка>,<ЧислоСимволов>)
Параметры:
Строка – тип Строка. Исходная строка.
ЧислоСимволов - тип Число. Количество выбираемых символов. Отрицательные значения считаются нулем. Если в исходной строке меньше символов, чем в параметре, то возвращается исходная строка.
Возвращаемое значение:
Тип Строка. Строка выбранных символов.
НРег (Lower)
Данная функция преобразует все символы строки в нижний регистр.
Синтаксис:
НРег(<Строка>)
Параметр:
Строка – тип Строка. Исходная строка.
НСтр (NStr)
Получает строку на языке текущего пользователя или указанном языке из набора строк на разных языках конфигурации.
Синтаксис:
НСтр(<ИсходнаяСтрока>,<КодЯзыка>)
Параметр:
Строка – тип Строка. Строки на разных языках, разделенные символом ";" (точка с запятой). Строка на одном языке состоит из кода языка, указанного в метаданных, символа "=" (равно) и собственно строки текста на данном языке в одинарных кавычках, двойных кавычках или без кавычек (когда указывается только один язык);
КодЯзыка – тип Строка. Код языка, на котором нужно получить строку. Если значение не указано, то строка будет выдаваться на языке, определенного для текущего пользователя.
Возвращаемое значение:
Тип Строка. Строка, соответствующая указанному языку или языку текущего пользователя.
ПОДСТРОКА (SUBSTRING)
Данная функция предназначена для выделения подстроки из строки. Параметры:
● выражение, имеющее строковый тип. Если в качестве первого параметра фигурирует строка, то результатом функции будет строка (возможно, нулевой длины). Если в качестве первого параметра будет использовано значение NULL, то результатом функции также будет значение NULL. Другие значения считаются недопустимыми и вызывают состояние ошибки;
● позиция символа, с которого начинается выделяемая из строки подстрока;
● длина выделяемой подстроки.
Копировать в буфер обменаПОДСТРОКА(Контрагенты.Адрес, 1, 4)
Прав (Right)
Данная функция выбирает первые справа символы строки.
Синтаксис:
Прав(<Строка>,<ЧислоСимволов>)
Параметры:
Строка – тип Строка. Исходная строка.
ЧислоСимволов - тип Число. Количество выбираемых символов. Отрицательные значения считаются нулем. Если в исходной строке меньше символов, чем в параметре, то возвращается исходная строка.
Возвращаемое значение:
Тип Строка. Строка выбранных символов.
СОКРЛ (TrimL)
Данная функция отсекает незначащие символы, стоящие слева от первого значащего символа в строке.
Синтаксис:
СокрЛ(<Строка>)
Параметры:
Строка – тип Строка. Исходная строка.
Возвращаемое значение:
Тип Строка. Строка, полученная в результате отсечения пробелов.
СОКРЛП(TrimAll)
Данная функция отсекает незначащие символы, стоящие слева от первого значащего символа в строке, и пробелы, стоящие справа от последнего значащего символа в строке.
Синтаксис:
СокрЛП(<Строка>)
Параметры:
Строка – тип Строка. Исходная строка.
Возвращаемое значение:
Тип Строка. Строка, полученная в результате отсечения пробелов.
СОКРП (TrimR)
Данная функция отсекает незначащие символы, стоящие справа от последнего значащего символа в строке.
Синтаксис:
СокрП(<Строка>)
Параметры:
Строка – тип Строка. Исходная строка.
Возвращаемое значение:
Тип Строка. Строка, полученная в результате отсечения пробелов.
СтрЗаменить (StrReplace)
Данная функция находит в исходной строке все вхождения подстроки поиска и заменяет ее на подстроку замены.
Синтаксис:
СтрЗаменить(<Строка>,<ПодстрокаПоиска>,<ПодстрокаЗамены>)
Параметры:
Строка – тип Строка. Исходная строка.
ПодстрокаПоиска –
ПодстрокаЗамены
Возвращаемое значение:
Тип Строка. Строка, полученная в результате замены.
Если второй параметр – константа, то длина строки равна:
<Строка> + (<Строка> / <ПодстрокаПоиска> с округлением в большую сторону) * (<ПодстрокаЗамены> - <ПодстрокаПоиска>), но не меньше чем длина <Строка>.
Если второй параметр не константа, то длина строки равна длине <Строка> * <ПодстрокаЗамены>.
Если полученная длина больше 1024, то получается строка неограниченной длины.
СтрНайти (StrFind)
Данная функция находит первое вхождение искомой строки как подстроки в исходной строке. Поиск выполняется без учета регистра.
Синтаксис:
СтрНайти(<Строка>, <ПодстрокаПоиска>)
Параметры:
Строка – тип Строка. Исходная строка.
ПодстрокаПоиска – тип Строка. Искомая подстрока.
Возвращаемое значение:
Тип Число (длина – 12). Найденная позиция, начиная с 1. Если возвращает 0, то строка не найдена.
1.7.7. Прочие функции
ВЫРАЗИТЬ (CAST)
Данная функция предназначена для выделения типа из выражения, которое может содержать составной тип. Если выражение будет содержать тип, отличный от требуемого, будет возвращено значение NULL.
Синтаксис:
Выразить(Выражение, УказаниеТипа)
Параметры:
● Выражение - преобразуемое выражение;
● УказаниеТипа – строка, содержащая строку типа. Например, Число, Строка и т. п. Кроме примитивных типов данная строка может содержать имя таблицы. В таком случае будет осуществлена попытка выразить к ссылке на указанную таблицу.
Копировать в буфер обменаВЫРАЗИТЬ(Данные.Реквизит1, "Число(10,3)")
ЕСТЬNULL (ISNULL)
Данная функция возвращает значение второго параметра, если значение первого параметра – NULL. В противном случае будет возвращено значение первого параметра.
Синтаксис:
ЕстьNull(Выражение1, Выражение2)
Параметры:
Выражение1 – проверяемое значение;
Выражение2 – возвращаемое значение, если значение Выражение1 есть NULL.
Копировать в буфер обменаЕСТЬNULL(Сумма(Продажи.СуммаОборот), 0)
Представление (Presentation)
Данная функция возвращает строковое представление
переданного значения не примитивного типа. Для значений примитивного типа
возвращает само значение.
Если в качестве параметра используется массив или таблица значений, то функция
возвращает строку, содержащую строковые представление всех элементов массива,
разделенных символами "; ". Если у
какого либо элемента строковое представление пустое, то вместо его
представления выводится строка <Пустое значение".
Пример:
Копировать в буфер обменаПредставление(Контрагент)
ПОЛУЧИТЬНАВИГАЦИОННУЮССЫЛКУ (GetURL)
Данная функция получает навигационную ссылку в формате «1С:Предприятия» на объект информационной базы, на его реквизит, или на обсуждение системы взаимодействия.
Примечание. Выполняет обращение к серверу только при получении ссылки на реквизит. При получении ссылки на объект информационной базы или обсуждение системы взаимодействия запрос на сервер не выполняется.
Синтаксис:
ПолучитьНавигационнуюСсылку(Объект, ИмяРеквизита, Индекс)
Параметры:
Объект – Обязательный. Тип Любая ссылка, РегистрСведенийКлючЗаписи.<Имя регистра сведений>, ИдентификаторОбсужденияСистемыВзаимодействия, ОбсуждениеСистемыВзаимодействия. В качестве значения данного параметра могут быть указаны:
● Ссылка на объект информационной базы,
● Ключ записи регистра сведений,
● Идентификатор обсуждения системы взаимодействия,
● Обсуждение системы взаимодействия.
Если в данном параметре передано значение, от которого нельзя получить навигационную ссылку, будет сгенерировано исключение о неверном значении параметра;
ИмяРеквизита - тип Строка.
Если требуется получить навигационную ссылку на реквизит объекта, то в данном
параметре следует указать имя реквизита.
Если требуется получить ссылку на ключ записи регистра сведений, то данный
параметр должен содержать имя ресурса регистра сведений.
Если требуется получить ссылку на реквизит табличной части, то он указывается
через точку "." после имени табличной
части, и в параметре <Индекс> следует
указать индекс строки табличной части;
Индекс - тип Число.
Индекс строки в табличной части, если требуется получить навигационную ссылку
на реквизит табличной части.
Первая строка имеет индекс, равный 0.
Пример:
Копировать в буфер обмена// Адрес объекта Адрес1 = ПолучитьНавигационнуюСсылку(Объект.Ссылка); // Адрес реквизита объекта Адрес2 = ПолучитьНавигационнуюСсылку(Объект.Ссылка, "Реквизит1"); // Адрес реквизита табличной части объекта Адрес3 = ПолучитьНавигационнуюСсылку(Объект.Ссылка, "ТабличнаяЧасть1.Реквизит1", 10);
ТипЗначения(ValueType)
Возвращает значение типа Тип, содержащее тип значения параметра функции.
Синтаксис:
ТипЗначения(Выражение)
Параметр:
Выражение – тип Строка. Строковое значение типа.
УникальныйИдентификатор (UUID)
Возвращает уникальный идентификатор переданной ссылки.
Синтаксис:
УникальныйИдентификатор(Выражение)
Параметры:
Выражение ‑ выражение, результатом вычисления которого является ссылочное значение (кроме ссылки на таблицы внешних источников данных).
Возвращаемое значение:
Зависит от значения параметра функции:
● NULL – NULL.
● Неопределено – пустой уникальный идентификатор (типа УникальныйИдентификатор).
● Для значения с типом ссылки – значение типа УникальныйИдентификатор.
● Для других типов (включая входящие в составной тип) – формируется ошибка времени выполнения.